/*
定义一个基于Pinia 的 Stores 状态管理库
defineStore()
第一个参数是管理库的唯一标识 一般与文件名相同
第二个参数是一个setup函数
第三个参数是持久化配置 persist:true
*/

import {
	defineStore
} from "pinia";
import {
	reactive,
	ref
} from "vue";

// 导出
export const useUserStore = defineStore({
	id: 'user', //id一般与文件名一致
	state: () => {
		return {
			token: "" //存放用户登录的token
		}
	},
	actions: {
		setToken(MyToken) {
			this.token = MyToken; //this
			/**
			 * JavaScript this 关键字
               面向对象语言中 this 表示当前对象的一个引用。
               但在 JavaScript 中 this 不是固定不变的，它会随着执行环境的改变而改变。
               在方法中，this 表示该方法所属的对象。
               如果单独使用，this 表示全局对象。
               在函数中，this 表示全局对象。
               在函数中，在严格模式下，this 是未定义的(undefined)。
               在事件中，this 表示接收事件的元素。
               类似 call() 和 apply() 方法可以将 this 引用到任何对象。
			 */


		},
		clearToken() {
			this.token = "";
		}
	},

	persist: {
		enabled: true,
		strategies: [{
			key: '',
			storage: localStorage //存储在本地
		}]
	}


});